package address

import "net"

// GetFreePort 在本机上获得一个空闲端口
func GetFreePort() (int, error) {
	addr, err := net.ResolveTCPAddr("tcp", "localhost:0")
	if err != nil {
		return 0, err
	}

	l, err := net.ListenTCP("tcp", addr)
	if err != nil {
		return 0, err
	}
	// 完成后释放
	defer l.Close()
	// 返回地址端口信息
	return l.Addr().(*net.TCPAddr).Port, nil
}
